package modelo;

import java.io.Serializable;
import java.text.DecimalFormat;
import java.text.ParseException;

import org.hibernate.criterion.Restrictions;

import dao.imp.Base_DatosDAO;

public class Detalle_Compra implements Serializable{
	private int nro_compra;
	private Fresa fresa;
	private	int cantidad_cestas;
	private double cantidad_kg;
	private double precio_cesta;
	private double precio_kg;
	
	public Detalle_Compra() {
		super();
	}

	public Detalle_Compra(int nro_compra, Fresa fresa, int catindad_cestas,
			double cantidad_kg, double precio_cesta, double precio_kg) {
		super();
		this.nro_compra = nro_compra;
		this.fresa = fresa;
		this.cantidad_cestas = catindad_cestas;
		this.cantidad_kg = cantidad_kg;
		this.precio_cesta = precio_cesta;
		this.precio_kg = precio_kg;
	}
	
	public int getNro_compra() {
		return nro_compra;
	}

	public void setNro_compra(int nro_compra) {
		this.nro_compra = nro_compra;
	}

	public Fresa getFresa() {
		return fresa;
	}

	public void setFresa(Fresa fresa) {
		this.fresa = fresa;
	}

	public int getCantidad_cestas() {
		return cantidad_cestas;
	}

	public void setCantidad_cestas(int cantidad_cestas) {
		this.cantidad_cestas = cantidad_cestas;
	}

	public double getCantidad_kg() throws ParseException {
		DecimalFormat tot = new DecimalFormat("###0. ##");
		return tot.parse(tot.format(cantidad_kg)).doubleValue();
	}

	public void setCantidad_kg(double cantidad_kg) {
		this.cantidad_kg = cantidad_kg;
	}

	public double getPrecio_cesta() throws ParseException {
		DecimalFormat tot = new DecimalFormat("###0. ##");
		return tot.parse(tot.format(precio_cesta)).doubleValue();
	}

	public void setPrecio_cesta(double precio_cesta) {
		this.precio_cesta = precio_cesta;
	}

	public double getPrecio_kg() throws ParseException {
		DecimalFormat tot = new DecimalFormat("###0. ##");
		return tot.parse(tot.format(precio_kg)).doubleValue();
	}

	public void setPrecio_kg(double precio_kg) {
		this.precio_kg = precio_kg;
	}

	public double MontoTotalDetalle() throws ParseException{
		DecimalFormat tot = new DecimalFormat("###0. ##");
		return tot.parse(tot.format((this.cantidad_kg*this.precio_kg)+(this.cantidad_cestas*this.precio_cesta))).doubleValue();
	}
	
	public String getNombre_fresa(){
		return getFresa().getNombre();
	}
	
	public double getSub_total() throws ParseException{
		Base_DatosDAO conexion = new Base_DatosDAO();
		Compra compra = (Compra)conexion.findByProperty(Compra.class, Restrictions.idEq(this.nro_compra)).get(0);
		int clientes = compra.getClientes_compra().size();
		if (compra.getTipo_compra().getCodigo().equals("C-PROV")){
			return MontoTotalDetalle();
		}else{;
			return MontoTotalDetalle()/(clientes+1);
		}
	}
}
